﻿//WrapperHelper.cs
//Copyright (c) 2013 StockSharp LLC, all rights reserved.
//This code module is part of StockSharp library.
//This code is licensed under the GNU GENERAL PUBLIC LICENSE Version 3.
//See the file License.txt for the license details.
//More info on: http://stocksharp.com

namespace StockSharp.Plaza.Wrappers
{
	using System;

	/// <summary>
	/// Вспомогательный класс для создания оберток.
	/// </summary>
	static class WrapperHelper
	{
		private static readonly bool _isX86 = !Environment.Is64BitProcess;

		/// <summary>
		/// Создать объект представляющий клиентскую схему репликации.
		/// </summary>
		/// <returns></returns>
		public static ITableSetWrapper CreateTableSet()
		{
			return _isX86 ? (ITableSetWrapper)new TableSetWrapper32() : new TableSetWrapper64();
		}

		/// <summary>
		/// Создать объект обслуживающий поток репликационных данных.
		/// </summary>
		/// <returns></returns>
		public static IStreamWrapper CreateStream()
		{
			return _isX86 ? (IStreamWrapper)new StreamWrapper32() : new StreamWrapper64();
		}

		/// <summary>
		/// Создать объект подключения.
		/// </summary>
		/// <returns></returns>
		public static IConnectionWrapper CreateConnection()
		{
			return _isX86 ? (IConnectionWrapper)new ConnectionWrapper32() : new ConnectionWrapper64();
		}

		/// <summary>
		/// Создать объект - фабрику для создания сообщений.
		/// </summary>
		/// <returns></returns>
		public static IMessageFactoryWrapper CreateMessageFactory()
		{
			return _isX86 ? (IMessageFactoryWrapper)new MessageFactoryWrapper32() : new MessageFactoryWrapper64();
		}
	}
}